//
//  main.m
//  OC_04字典
//
//  Created by dllo on 16/7/7.
//  Copyright © 2016年 dllo. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "ContactManager.h"
#import "Contact.h"
int main(int argc, const char * argv[]) {
      // 1.字典
      // 存储键值对(key-value)的集合类型
      // 字典中存储的数据没有顺序
      // 通过key值存储和查找
      // <2>初始化
      //initwithObjectKeyandvalue key value nil ...
      //字典中只能存放对象类型(NSObject的子类都是对象类型)
      //如果出现汉字 代码提示会失效
      NSDictionary *dic = [[NSDictionary alloc]initWithObjectsAndKeys:@"李四",@"name", @"18", @"age",nil];
      
      //<3>遍历构造器
      NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"李四",@"name", @"18", @"age", nil];
      //<4>字面量 字符串 @"" 数组 @[] 字典 @{key : value, key : value}
      NSDictionary *diction = @{@"name":@"周杰伦", @"age":@18};
      //或者
      NSDictionary *diction1 = @{@"name":@"周杰伦",
                                  @"age":@18};
      //<5>取值
      //通过key取Value
     NSString *name = [diction objectForKey:@"name"];
      //获取所有的key
      NSArray *alllKey =  diction.allKeys;
      //获取所有的Value
      NSArray *AllOfValue = diction.allValues;
      // count
      NSUInteger count = diction.count;
      //通过一个数组取到对应数据的value
    NSArray *allOfValuearray = [diction objectsForKeys:diction.allKeys notFoundMarker:[NSString class]];
      
      NSLog(@"%@", allOfValuearray);
      //语法糖取值arr[0]
      
      //可变字典
      //1初始化方式(不推荐使用字面量)
      NSMutableDictionary *mdic = [NSMutableDictionary dictionary];
  /** 并不推荐这样写→ */  NSMutableDictionary *mdic1 = [@{}mutableCopy];
      
      //2取值 与不可变字典不一样的地方
      //增 删 改
      //添加 setObjectvalue forkey:key
      //如果key值已经存在, 会将之前的value覆盖
      // 如果key不存在 会直接添加
      [mdic setObject:@"七妹" forKey:@"name"];
      NSLog(@"%@", mdic);
      //删
      [mdic removeObjectForKey:@"name"];
      [mdic removeAllObjects];
      NSLog(@"%@", mdic);
      //语法糖
      mdic[@"name"] = @"周小伦";
    /**
     完成以下需求
     需求：1、定义联系人类Contact。实例变量：姓名(拼音，首字母大写)、性别、电话号码、住址、分组名称、年龄。方法：自定义初始化方法(姓名、电话号码)、显示联系人信息。
     2、在main.m中定义字典，分组管理所有联系人。分组名为26个大写的英文字母。
     3、可以添加联系人对象，如果姓名或电话号码为空，添加失败。添加联系人到匹配的分组。
     4、删除某个分组的全部联系人。
     
     */
      
//      
//      //key :A~Z value :NSMutableArray
//      //判断名字和手机号是不是空
//      if (contact.name.length > 0 && contact.phoneNumber.length > 0) {
//            //都不是空 可以添加
//            //通过联系人的分组名,取到对应的分组数组
//            NSMutableArray *contactArr = [contactOfdic objectForKey:contact.groupName];
//
//            //判断数组是否存在
//            if (contactArr == nil) {
//                  //数组不存在创建数组
//                  contactArr = [NSMutableArray array];
//                  [contactArr addObject:contact];
//                  [contactOfdic setObject:contactArr forKey:contact.groupName];
//
//            }else {
//                  // 数组存在 直接添加
//                  [contactArr addObject:contact];
//            }
//
//            
//            NSLog(@"添加%@成功", contact.name);
//            
//        //否则添加失败
//       }else{
//
//            NSLog(@"添加失败");
//      }
      Contact *contact = [[Contact alloc]initWithName:@"周杰伦"    PhoneNumber:@"1388888888"];
      contact.groupName = @"Z";
      Contact *contact1 = [[Contact alloc]initWithName:@"王力宏"    PhoneNumber:@"1388888888"];
      contact1.groupName = @"W";
      Contact *contact2 = [[Contact alloc]initWithName:@"蔡依林"    PhoneNumber:@"1388888888"];
      contact2.groupName = @"C";
      Contact *contact3 = [[Contact alloc]initWithName:@"林俊杰"    PhoneNumber:@"1388888888"];
      contact3.groupName = @"L";
      
      [contact showContact];
      NSMutableDictionary *contactOfdic = [NSMutableDictionary dictionary];
      
      ContactManager *contactManager = [[ContactManager alloc]initWithDictionary:contactOfdic];
      [contactManager addContact:contact];
      [contactManager addContact:contact1];
      [contactManager addContact:contact2];
      [contactManager addContact:contact3];
      NSLog(@"%@", contactManager.contactDictionary);
      
      //2集合
      //不可变 NSSet 可变 NSMutableSet
      //<1>初始化
      //集合会删除掉重复的内容(互异性)
      //要删除数组或者字典中重复的内容, 放入集合中
      NSSet *set =[[NSSet alloc]initWithObjects:@"周杰伦", @"周杰伦", nil];
      NSLog(@"%@", set);
      //2 构造器
     NSSet *setObject = [NSSet setWithObjects:@"王力宏", @"王力宏", nil];
      //3没有提供集合的字面量
      //取值
      //从集合中取出任意元素
      [set anyObject];
      //count
      NSUInteger setcount = set.count;
            
            return 0;
}
